package  two;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.*;

public class CopyThread  implements Runnable{
    @Override
    public void run() {
        copyDirs("D:/test","D:/test1");
    }

    public static void copyDirs(String path1, String path2){
        //构造File对象与E盘作业三文件夹关联
        File file1 = new File(path1);
        //构造File对象接收复制的文件
        File file2 = new File(path2);
        if(!file2.exists()){
            file2.mkdirs();//如果目标目录不存在就创建
        }
        File[] files = file1.listFiles();
        for(File f : files){
            if(f.isFile()){//如果f是文件
                copyFile(f.getAbsolutePath(),path2 + "/" +f.getName());
            }else{//如果f是目录，使用递归拷贝
                copyDirs(f.getAbsolutePath(),path2 + "/" +f.getName());
            }
        }

    }
    public static void copyFile(String path1, String path2){
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            //创建缓冲字节输入流与E盘作业三文件夹关联
            bis = new BufferedInputStream(new FileInputStream(path1));
            //创建缓冲字节输出流与E盘作业三副本关联
            bos = new BufferedOutputStream(new FileOutputStream(path2));
            //不断对文件进行拷贝
            System.out.println("正在玩命拷贝中...");
            byte[] brr = new byte[1024];
            int res = 0;
            while((res = bis.read(brr)) != -1){
                bos.write(brr,0,res);
            }
            System.out.println("拷贝完成啦！！");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭流并释放资源
            if(null != bos){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(null != bis){
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}